package trastienda.service;

import java.util.Collection;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import trastienda.dao.UsuarioDAO;
import trastienda.excepcion.DAOExcepcion;
import trastienda.excepcion.LoginExcepcion;
import trastienda.modelo.Usuario;

@Service
public class UsuarioServiceImpl implements UsuarioService {

	@Autowired
	private UsuarioDAO usuarioDAO;

	public void setUsuarioDAO(UsuarioDAO usuarioDAO) {
		this.usuarioDAO = usuarioDAO;
	}

	public Usuario validar(String idUsuario, String clave) throws DAOExcepcion,
			LoginExcepcion {
		return usuarioDAO.validar(idUsuario, clave);
	}

	@Override
	public Collection<Usuario> buscarPorNombre(String nombre)
			throws DAOExcepcion {
		return usuarioDAO.buscarPorNombre(nombre);
	}

	@Override
	public Usuario obtenerPorIdUsuario(String idUsuario) throws DAOExcepcion {
		return usuarioDAO.obtenerPorIdUsuario(idUsuario);
	}

	@Override
	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = { DAOExcepcion.class })
	public Usuario insertar(Usuario vo) throws DAOExcepcion {
		return usuarioDAO.insertar(vo);
	}

	@Override
	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = { DAOExcepcion.class })
	public Usuario actualizar(Usuario vo) throws DAOExcepcion {
		return usuarioDAO.actualizar(vo);
	}

	@Override
	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = { DAOExcepcion.class })
	public void eliminar(String idUsuario) throws DAOExcepcion {
		usuarioDAO.eliminar(idUsuario);
	}

	@Override
	public Collection<Usuario> listarTodos() throws DAOExcepcion {
		return usuarioDAO.listarTodos();
	}

}
